//
//  YsCloudFileManagerHeader.h
//  YsCloudFileManageSDK
//
//  Created by 宋宏康 on 2020/2/24.
//

#ifndef YsCloudFileManagerHeader_h
#define YsCloudFileManagerHeader_h

#import "YsCloudFileManageSDKServer.h"
#import "YsCloudFileUserManage.h"


/// 秒传检查地址
#define kSuperUploadCheckTestUrl YsCloudFileManageSDKServer.shareCloudFileManageSDKServerManager.serverModel.check
/// 上传文件地址
#define kSuperUploadTestUrl YsCloudFileManageSDKServer.shareCloudFileManageSDKServerManager.serverModel.uploadFile
///上传完成地址
#define kSuperUploadFinishTestUrl YsCloudFileManageSDKServer.shareCloudFileManageSDKServerManager.serverModel.moveFile
/// accountCode
#define kAccountCode [YsCloudFileUserManage shareCloudFileUserManage].userModel.accountCode
/// hash参数
#define FileHashDefaultChunkSizeForReadingData 1024*64
/// 服务器地址
#define kGetServerUrl @"https://service.ys100.com/ways/ways/upload/fetchWay"
/// 文件存储的位置
#define kCloudFileLocation @"YsCloudFileManageSDK"
/// 上传文件存储的位置
#define kCloudFileUpload @"cloudFileUpload"
/// 下载文件存储的位置
#define kCloudFileDownload @"cloudFileDownload"

/// 下载最大的并发数
#define kMAXDownloadTASK_COUNT 2
/// 上传最大的并发数
#define kMAXUploadloadTASK_COUNT 1

/// 下载完成的通知
#define kDownloadFinish @"downloadfinsh"

/// 下载任务恢复的通知
#define kDownloadResume @"downloadresume"

/// 下载任务暂停的通知
#define kDownloadSuspend @"downloadsuspend"

/// 下载任务取消的通知
#define kDownloadCancel @"downloadcancel"

/// 下载任务失败通知
#define kDownloadError @"downloadError"

/// 上传完成的通知
#define kuploadFinish @"uploadfinsh"

/// 上任务恢复的通知
#define kuploadResume @"uploadresume"

/// 下载任务暂停的通知
#define kuploadSuspend @"uploadsuspend"

/// 下载任务取消的通知
#define kuploadCancel @"uploadcancel"

/// 下载任务失败通知
#define kuploadError @"uploadError"






#if defined(__has_feature) && defined(__has_attribute)
    #if __has_attribute(deprecated)
        #define DEPRECATED_ATTRIBUTE        __attribute__((deprecated))
        #if __has_feature(attribute_deprecated_with_message)
            #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
        #else
            #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated))
        #endif
    #else
        #define DEPRECATED_ATTRIBUTE
        #define DEPRECATED_MSG_ATTRIBUTE(s)
    #endif
#elif defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
    #define DEPRECATED_ATTRIBUTE        __attribute__((deprecated))
    #if (__GNUC__ >= 5) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5))
        #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
    #else
        #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated))
    #endif
#else
    #define DEPRECATED_ATTRIBUTE
    #define DEPRECATED_MSG_ATTRIBUTE(s)
#endif


#define SemaphoreBegin \
static dispatch_semaphore_t semaphore; \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
    semaphore = dispatch_semaphore_create(1); \
}); \
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);

#define SemaphoreEnd \
dispatch_semaphore_signal(semaphore);


#endif /* YsCloudFileManagerHeader_h */
